package com.example.textroom.data.dao;

import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;

import com.example.textroom.bead.Word;

import java.util.List;

@Dao
public interface WordDao {

    @Insert
    void insertWords(Word... words);

    @Update
    void updateWords(Word... words);

    @Delete
    void deleteWords(Word... words);

    @Query("DELETE FROM WORD")
    void deleteAllWords();

    // getAllWordsLive() 方法不用单独创建一个后台线程或者专门放到线程池中去执行。
    // 在Android的Room库中，getAllWordsLive()方法返回一个LiveData对象。
    // LiveData是生命周期感知型的，它会自动在后台线程中执行数据库查询操作，并在数据发生变化时通知观察者。
    // 这是因为Room和LiveData的结合使得数据库查询操作能够在后台线程中自动执行，从而避免阻塞主线程。
    @Query("SELECT * FROM WORD ORDER BY ID DESC")
    LiveData<List<Word>> getAllWordsLive();

}
